﻿#define _CRT_SECURE_NO_WARNINGS

#include "BinarySearchTree.h"

//int main()
//{
//	key::BSTree<int> bst;
//	int a[] = { 8,3,1,10,6,4,7,14,13 };
//
//	for (auto e : a)
//	{
//		bst.Insert(e);
//	}
//
//	bst.InOrder();
//
//	bst.Insert(16);
//	bst.InOrder();
//
//	/*bst.Erase(8);
//	bst.InOrder();*/
//
//	for (auto e : a)
//	{
//		bst.Erase(e);
//		bst.InOrder();
//	}
//
//	return 0;
//}

//int main()
//{
//	key_value::BSTree<string, string> dict;
//
//	dict.Insert("left", "左边");
//	dict.Insert("right", "右边");
//	dict.Insert("insert", "插入");
//	dict.Insert("string", "字符串");
//
//	string str;
//
//	while (cin >> str)
//	{
//		auto ret = dict.Find(str);
//
//		if (ret)
//		{
//			cout << "->" << ret->_value << endl;
//		}
//		else
//		{
//			cout << "not found" << endl;
//		}
//	}
//
//	return 0;
//}

int main()
{
	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜", "苹果", "香蕉", "苹果", "香蕉" };

	key_value::BSTree<string, int> counttree;

	for (const auto& str : arr)
	{
		// 先查找⽔果在不在搜索树中
        // 1、不在，说明⽔果第⼀次出现，则插⼊<⽔果, 1>
       // 2、在，则查找到的结点中⽔果对应的次数++
       //BSTreeNode<string, int>* ret = countTree.Find(str);
		auto ret = counttree.Find(str);
		if (ret)
		{
			ret->_value++;
		}
		else
		{
			counttree.Insert(str, 1);
		}

	}

	counttree.InOrder();
	return 0;
}